home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
games
/
oyatsu
/
src
/
pad.c
< prev
next >
Wrap
Text File
|
1999-11-22
|
2KB
|
107 lines
/*****************************************
推理パズル「おやつタイム」
入力
*****************************************/
#include <sys\iocs.h>
#include "oyatsu.h"
#include "pad.h"
static PAD pad_data = 0xffff; /* パッドの状態 */
static PAD pad_just; /* 今回の変化 */
static PAD pad_rept; /* リピート付き */
static Bool read_flag = TRUE; /* 状態取得があったか */
static int pad_cnt = 16; /* リピート用カウンタ */
Bool esc_key = FALSE; /* ESCキー */
Bool esc_last = TRUE;
/********************
パッド同期処理
********************/
void pad_synch(void)
{
int k1;
PAD last, last_j, last_r;
last = pad_data; /* 前回の状態 */
last_j = pad_just;
last_r = pad_rept;
pad_data = 0x0000;
k1 = _iocs_ms_getdt(); /* マウスボタン入力 */
if ( k1 & 0xff00 ) { /* 左ボタン */
pad_data |= PAD_A;
}
if ( k1 & 0x00ff ) { /* 右ボタン */
pad_data |= PAD_B;
}
pad_just = pad_data & ~last; /* 変化データ */
pad_rept = pad_just; /* リピート付き */
if ( pad_data == last ) {
if ( --pad_cnt == 0 ) {
pad_rept = pad_data;
pad_cnt = 8;
}
}
else {
pad_cnt = 24;
}
if ( !read_flag ) {
pad_just |= last_j;
pad_rept |= last_r;
}
read_flag = FALSE;
if ( _iocs_bitsns(0) & 0x02 ) { /* ESCキー */
esc_key = !esc_last;
esc_last = TRUE;
}
else {
esc_key = FALSE;
esc_last = FALSE;
}
}
/*****************************
マウスカーソル位置取得
戻り値 x, y : 位置
*****************************/
void get_ms_pos(int* x, int* y)
{
int t;
t = _iocs_ms_curgt(); /* マウスカーソル座標 */
*x = t/0x10000;
*y = t & 0xffff;
}
/****************************
パッド状態取得
戻り値 パッド状態
****************************/
PAD get_pad(void) /* そのまま */
{
return pad_data;
}
PAD get_push(void) /* 押した直後 */
{
read_flag = TRUE;
return pad_just;
}
PAD get_rept(void) /* リピート付き */
{
read_flag = TRUE;
return pad_rept;
}
/********** End of File **************************************************/